* @ingroup Cache
*/
-use Psr\Log\LoggerInterface;
-
/**
* Wrapper around a BagOStuff that caches data in memory
*
* @param BagOStuff $backend Permanent backend to use
* @param array $params Parameters for HashBagOStuff
*/
- function __construct( BagOStuff $backend, $params = array() ) {
- $this->backend = $backend;
+ function __construct( BagOStuff $backend, $params = [] ) {
parent::__construct( $params );
+
+ $this->backend = $backend;
+ $this->attrMap = $backend->attrMap;
}
protected function doGet( $key, $flags = 0 ) {
$ret = parent::doGet( $key, $flags );
- if ( $ret === false ) {
+ if ( $ret === false && !$this->hasKey( $key ) ) {
$ret = $this->backend->doGet( $key, $flags );
- if ( $ret !== false ) {
- $this->set( $key, $ret, 0, self::WRITE_CACHE_ONLY );
- }
+ $this->set( $key, $ret, 0, self::WRITE_CACHE_ONLY );
}
return $ret;
}
return true;
}
- public function setLogger( LoggerInterface $logger ) {
- parent::setLogger( $logger );
- $this->backend->setLogger( $logger );
- }
-
public function setDebug( $bool ) {
parent::setDebug( $bool );
$this->backend->setDebug( $bool );